<?php
require_once "../conexion/conexion.php"; // Asegurar conexión correcta
header('Content-Type: application/json');

try {
    // Definir la constante tipo_usuario
    $tipo_usuario = 'usuarios';

    // Guardar datos de entrada en debug.log para verificar si llegan bien
    file_put_contents('debug.log', print_r($_POST, true), FILE_APPEND);

    if ($_SERVER["REQUEST_METHOD"] !== "POST") {
        throw new Exception("Método no permitido");
    }

    // Validar que todos los campos estén presentes
    if (empty($_POST['nombre']) || empty($_POST['correo']) || empty($_POST['contrasena'])) {
        throw new Exception("Todos los campos son obligatorios");
    }

    // Limpiar y validar datos
    $nombre = trim(filter_var($_POST["nombre"], FILTER_SANITIZE_STRING));
    $correo = trim(filter_var($_POST["correo"], FILTER_SANITIZE_EMAIL));
    $password = $_POST["contrasena"];

    if (!filter_var($correo, FILTER_VALIDATE_EMAIL)) {
        throw new Exception("Correo electrónico no válido");
    }

    // Verificar si el usuario ya existe
    $stmt = $conexion->prepare("SELECT id_usuario FROM usuarios WHERE correo = ?");
    $stmt->execute([$correo]);
    if ($stmt->fetch()) {
        throw new Exception("Este correo electrónico ya está registrado");
    }

    // Hash de la contraseña
    $hashed_password = password_hash($password, PASSWORD_DEFAULT);

    // Insertar usuario
    $stmt = $conexion->prepare("INSERT INTO usuarios (nombre, tipo_usuario, correo, contrasena_hash) VALUES (?, ?, ?, ?)");
    $stmt->execute([$nombre, $tipo_usuario, $correo, $hashed_password]);

    echo json_encode([
        "status" => "success",
        "message" => "Usuario registrado correctamente"
    ]);

} catch (Exception $e) {
    file_put_contents('debug.log', "Error en registro: " . $e->getMessage() . PHP_EOL, FILE_APPEND);
    echo json_encode([
        "status" => "error",
        "message" => $e->getMessage()
    ]);
}
?>